package com.winchain.chainbill.bill.base.dao;

import com.shell.bee.persistence.mapper.BaseMapper;
import com.winchain.chainbill.bill.base.po.CbRec;
import com.winchain.chainbill.bill.biz.query.vo.CbRecQueryVo;
import com.winchain.chainbill.bill.biz.query.vo.CbRecVo;
import com.winchain.chainbill.bill.biz.receive.vo.DelayCalculatedInterestInfoVO;
import com.winchain.chainbill.bill.biz.receive.vo.DelayCalculatedInterestQueryVO;
import com.winchain.chainbill.bill.biz.receive.vo.DelayCalculatedInterestTotalVO;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public abstract interface CbRecDao extends BaseMapper<CbRec> {
	public abstract int updateBillOptimistically(CbRec paramCbRec);

	public abstract List<CbRecVo> selectBillForSend(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<CbRecVo> selectBillForRcv(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<CbRecVo> selectBillForRpur(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<CbRecVo> selectBillForRpurNotInvoice(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<CbRecVo> selectOwnBill(CbRecQueryVo paramCbRecQueryVo);

	public abstract int getMsgTipBySnd(@Param("cusId") String paramString1, @Param("billState") String paramString2);

	public abstract int getMsgTipByRcv(@Param("cusId") String paramString1, @Param("billState") String paramString2);

	public abstract int getMsgTipByRcvAprv(@Param("cusId") String paramString1,
			@Param("billState") String paramString2);

	public abstract int getMsgTipByXfe(@Param("cusId") String paramString1, @Param("billState") String paramString2);

	public abstract int getMsgTipByDct(@Param("cusId") String paramString1, @Param("billState") String paramString2);

	public abstract List<CbRecVo> selectBillForPrepayment(@Param("workDate") String paramString1,
			@Param("billState") String paramString2);

	public abstract List<CbRecVo> selectBillForTimeOut(@Param("theDayBefore") String paramString1,
			@Param("sevenDaysAgo") String paramString2, @Param("threeDaysLater") String paramString3,
			@Param("oneDayAfter") String paramString4);

	public abstract List<CbRecVo> selectBillsByExpireDate(@Param("expireDate") String paramString1,
			@Param("acctType") String paramString2, @Param("stateList") List<String> paramList);

	public abstract List<CbRec> selectExpSndBills(@Param("expDate") String paramString1,
			@Param("grpId") String paramString2, @Param("notInStates") List<String> paramList);

	public abstract List<CbRec> selectExpDlyBills(@Param("expDate") String paramString1,
			@Param("grpId") String paramString2, @Param("notInStates") List<String> paramList);

	public abstract List<CbRec> selectExpChdBills(@Param("expDate") String paramString1,
			@Param("billId") String paramString2, @Param("notInStates") List<String> paramList);

	public abstract CbRec selectLeafBills(@Param("rootId") String paramString1, @Param("billId") String paramString2);

	public abstract List<CbRecVo> selectBillForPrefinancing(@Param("dctDate") String paramString);

	public abstract List<DelayCalculatedInterestInfoVO> selectDelayCalculatedInterestList(
			DelayCalculatedInterestQueryVO paramDelayCalculatedInterestQueryVO);

	public abstract DelayCalculatedInterestTotalVO selectDelayCalculatedInterestTotal(
			DelayCalculatedInterestQueryVO paramDelayCalculatedInterestQueryVO);

	public abstract CbRec selectByKeyReadCommitted(@Param("billId") String paramString);

	public abstract List<CbRecVo> selectBillForRpurPaid(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<CbRecVo> selectCurrentRejectBills(@Param("buyerId") String paramString1,
			@Param("startTime") String paramString2, @Param("endTime") String paramString3,
			@Param("billState") String paramString4);

	public abstract List<CbRecVo> selectOwnBillForDct(CbRecQueryVo paramCbRecQueryVo);
}
